home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / include / linux / blktrace_api.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  4KB  |  142 lines

  1. #ifndef BLKTRACE_H
  2. #define BLKTRACE_H
  3.  
  4. #include <linux/types.h>
  5.  
  6. /*
  7.  * Trace categories
  8.  */
  9. enum blktrace_cat {
  10.     BLK_TC_READ    = 1 << 0,    /* reads */
  11.     BLK_TC_WRITE    = 1 << 1,    /* writes */
  12.     BLK_TC_BARRIER    = 1 << 2,    /* barrier */
  13.     BLK_TC_SYNC    = 1 << 3,    /* sync IO */
  14.     BLK_TC_SYNCIO    = BLK_TC_SYNC,
  15.     BLK_TC_QUEUE    = 1 << 4,    /* queueing/merging */
  16.     BLK_TC_REQUEUE    = 1 << 5,    /* requeueing */
  17.     BLK_TC_ISSUE    = 1 << 6,    /* issue */
  18.     BLK_TC_COMPLETE    = 1 << 7,    /* completions */
  19.     BLK_TC_FS    = 1 << 8,    /* fs requests */
  20.     BLK_TC_PC    = 1 << 9,    /* pc requests */
  21.     BLK_TC_NOTIFY    = 1 << 10,    /* special message */
  22.     BLK_TC_AHEAD    = 1 << 11,    /* readahead */
  23.     BLK_TC_META    = 1 << 12,    /* metadata */
  24.     BLK_TC_DISCARD    = 1 << 13,    /* discard requests */
  25.     BLK_TC_DRV_DATA    = 1 << 14,    /* binary per-driver data */
  26.  
  27.     BLK_TC_END    = 1 << 15,    /* only 16-bits, reminder */
  28. };
  29.  
  30. #define BLK_TC_SHIFT        (16)
  31. #define BLK_TC_ACT(act)        ((act) << BLK_TC_SHIFT)
  32.  
  33. /*
  34.  * Basic trace actions
  35.  */
  36. enum blktrace_act {
  37.     __BLK_TA_QUEUE = 1,        /* queued */
  38.     __BLK_TA_BACKMERGE,        /* back merged to existing rq */
  39.     __BLK_TA_FRONTMERGE,        /* front merge to existing rq */
  40.     __BLK_TA_GETRQ,            /* allocated new request */
  41.     __BLK_TA_SLEEPRQ,        /* sleeping on rq allocation */
  42.     __BLK_TA_REQUEUE,        /* request requeued */
  43.     __BLK_TA_ISSUE,            /* sent to driver */
  44.     __BLK_TA_COMPLETE,        /* completed by driver */
  45.     __BLK_TA_PLUG,            /* queue was plugged */
  46.     __BLK_TA_UNPLUG_IO,        /* queue was unplugged by io */
  47.     __BLK_TA_UNPLUG_TIMER,        /* queue was unplugged by timer */
  48.     __BLK_TA_INSERT,        /* insert request */
  49.     __BLK_TA_SPLIT,            /* bio was split */
  50.     __BLK_TA_BOUNCE,        /* bio was bounced */
  51.     __BLK_TA_REMAP,            /* bio was remapped */
  52.     __BLK_TA_ABORT,            /* request aborted */
  53.     __BLK_TA_DRV_DATA,        /* driver-specific binary data */
  54. };
  55.  
  56. /*
  57.  * Notify events.
  58.  */
  59. enum blktrace_notify {
  60.     __BLK_TN_PROCESS = 0,        /* establish pid/name mapping */
  61.     __BLK_TN_TIMESTAMP,        /* include system clock */
  62.     __BLK_TN_MESSAGE,        /* Character string message */
  63. };
  64.  
  65.  
  66. /*
  67.  * Trace actions in full. Additionally, read or write is masked
  68.  */
  69. #define BLK_TA_QUEUE        (__BLK_TA_QUEUE | BLK_TC_ACT(BLK_TC_QUEUE))
  70. #define BLK_TA_BACKMERGE    (__BLK_TA_BACKMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
  71. #define BLK_TA_FRONTMERGE    (__BLK_TA_FRONTMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
  72. #define    BLK_TA_GETRQ        (__BLK_TA_GETRQ | BLK_TC_ACT(BLK_TC_QUEUE))
  73. #define    BLK_TA_SLEEPRQ        (__BLK_TA_SLEEPRQ | BLK_TC_ACT(BLK_TC_QUEUE))
  74. #define    BLK_TA_REQUEUE        (__BLK_TA_REQUEUE | BLK_TC_ACT(BLK_TC_REQUEUE))
  75. #define BLK_TA_ISSUE        (__BLK_TA_ISSUE | BLK_TC_ACT(BLK_TC_ISSUE))
  76. #define BLK_TA_COMPLETE        (__BLK_TA_COMPLETE| BLK_TC_ACT(BLK_TC_COMPLETE))
  77. #define BLK_TA_PLUG        (__BLK_TA_PLUG | BLK_TC_ACT(BLK_TC_QUEUE))
  78. #define BLK_TA_UNPLUG_IO    (__BLK_TA_UNPLUG_IO | BLK_TC_ACT(BLK_TC_QUEUE))
  79. #define BLK_TA_UNPLUG_TIMER    (__BLK_TA_UNPLUG_TIMER | BLK_TC_ACT(BLK_TC_QUEUE))
  80. #define BLK_TA_INSERT        (__BLK_TA_INSERT | BLK_TC_ACT(BLK_TC_QUEUE))
  81. #define BLK_TA_SPLIT        (__BLK_TA_SPLIT)
  82. #define BLK_TA_BOUNCE        (__BLK_TA_BOUNCE)
  83. #define BLK_TA_REMAP        (__BLK_TA_REMAP | BLK_TC_ACT(BLK_TC_QUEUE))
  84. #define BLK_TA_ABORT        (__BLK_TA_ABORT | BLK_TC_ACT(BLK_TC_QUEUE))
  85. #define BLK_TA_DRV_DATA    (__BLK_TA_DRV_DATA | BLK_TC_ACT(BLK_TC_DRV_DATA))
  86.  
  87. #define BLK_TN_PROCESS        (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY))
  88. #define BLK_TN_TIMESTAMP    (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY))
  89. #define BLK_TN_MESSAGE        (__BLK_TN_MESSAGE | BLK_TC_ACT(BLK_TC_NOTIFY))
  90.  
  91. #define BLK_IO_TRACE_MAGIC    0x65617400
  92. #define BLK_IO_TRACE_VERSION    0x07
  93.  
  94. /*
  95.  * The trace itself
  96.  */
  97. struct blk_io_trace {
  98.     __u32 magic;        /* MAGIC << 8 | version */
  99.     __u32 sequence;        /* event number */
  100.     __u64 time;        /* in microseconds */
  101.     __u64 sector;        /* disk offset */
  102.     __u32 bytes;        /* transfer length */
  103.     __u32 action;        /* what happened */
  104.     __u32 pid;        /* who did it */
  105.     __u32 device;        /* device number */
  106.     __u32 cpu;        /* on what cpu did it happen */
  107.     __u16 error;        /* completion error */
  108.     __u16 pdu_len;        /* length of data after this trace */
  109. };
  110.  
  111. /*
  112.  * The remap event
  113.  */
  114. struct blk_io_trace_remap {
  115.     __be32 device_from;
  116.     __be32 device_to;
  117.     __be64 sector_from;
  118. };
  119.  
  120. enum {
  121.     Blktrace_setup = 1,
  122.     Blktrace_running,
  123.     Blktrace_stopped,
  124. };
  125.  
  126. #define BLKTRACE_BDEV_SIZE    32
  127.  
  128. /*
  129.  * User setup structure passed with BLKTRACESTART
  130.  */
  131. struct blk_user_trace_setup {
  132.     char name[BLKTRACE_BDEV_SIZE];    /* output */
  133.     __u16 act_mask;            /* input */
  134.     __u32 buf_size;            /* input */
  135.     __u32 buf_nr;            /* input */
  136.     __u64 start_lba;
  137.     __u64 end_lba;
  138.     __u32 pid;
  139. };
  140.  
  141. #endif
  142.